package com.cennavi.bigdata.baotou.service;



import com.alibaba.fastjson.JSONObject;

import java.io.File;
import java.util.List;
import java.util.Map;

/**
 * Created by zuoweiguang on 2016/9/30.
 */
public interface ViewService {

    /**
     * 测试oracle连接
     */
    String testOracle();

    /**
     * 获取rtic路况
     * @param z
     * @param x
     * @param y
     * @param timestamp
     * @return byte[]
     */
    byte[] getTraffic(int z, int x, int y, String timestamp);

    //调用尤波提供的【拥堵热点】服务接口

    /**
     * 获取拥堵热点数据（路段）
     * @return String
     * @param duration
     * @param jamLength
     * @param avgspeed
     */
    String getCongestionHotspotsRoad(String duration, String jamLength, String avgspeed);

    /**
     * 获取拥堵热点数据（卡口）
     * @return String
     */
    String getCongestionHotspotsKaKou();

    String getCongestionHotspots(String id, String duration, String jamLength, String jcID);

    String getCongestionHotspotsKaKous(String jcID);



    String getTrafficHeatPoint();

    /**
     * 获取交通管制数据
     * @param controlType
     * @return String
     */
    String getTrafficControl(String controlType);

    /**
     * 录入交通管制数据
     * @return String
     */
    String insertTrafficControl(String jsonData);

    /**
     * 获取施工占道数据
     * @return String
     */
    String getConstructionOccupation();

    /**
     * 录入施工占道数据
     * @return String
     */
    String insertConstructionOccupation(String jsonData);

    /**
     * 指数分析预警-区域指数预警
     * 根据指数类别查询当前指数类别（商圈、医院、政府、学校、地铁）rtic路段的路况
     * @param regionType,dateType
     * @return String
     */
    String getExponentByType(String regionType, String dateType);

    /**
     * 获取道路实时指数数据
     * @return String
     */
    String getRoadIndexRT();

    /**
     * 获取行政区域实时指数数据
     * @return String
     */
    String getDCIndexRT();

    /**
     * 获取热点指数数据
     * @return String
     */
    String getHotIndexRT();

    /**
     * 获取pattern数据
     * @param timestamp
     * @return String
     */
    byte[] getPattern(int z, int x, int y, String timestamp);

    /**
     * 获取辖区指数数据
     * @return String
     */
    String getTeamIndexRT();

    /**
     * 获取历史年指数数据
     * @param year
     * @return String
     */
    String getDCIndexByYear(String year);

    /**
     * 获取历史月指数数据
     * @param year
     * @param month
     * @return String
     */
    String getDCIndexByMonth(String year, String month);

    /**
     * 获取历史节假日指数数据
     * @param holiday
     * @param year
     * @return String
     */
    String getDCIndexByHoli(String holiday, String year);

    /**
     * 交通安全态势分析- 获取常发拥堵路段排名数据
     * @param startDate
     * @param endDate
     * @return String
     */
    String getCongestionRoadRank(String startDate, String endDate);

    /**
     * 交通安全态势分析- 获取常发拥堵路段统计数据
     * @param startDate
     * @param endDate
     * @param duration
     * @return String
     */
    String getCongestionRoadStatis(String startDate, String endDate, String duration);

    /**
     * 交通安全态势分析- 获取常发拥堵瓶颈时间分析数据
     * @param startDate
     * @param endDate
     * @param roadId
     * @return String
     */
    String getCongestionRoadTime(String startDate, String endDate, String roadId);

    /**
     * 交通监测系统-辖区道路指数数据
     * @param teamID
     * @return String
     */
    String getTeamRoadIndexRT(String teamID);

    /**
     * 交通监测系统-交通指数监测数据
     * @return String
     */
    String getTrifficIndexRT();

    /**
     * 交通监测系统-交通事故监测数据
     * @return String
     */
    String getAccidentMonitoring();

    /**
     * 交通监测系统-交通事件源统计数据
     * @return String
     */
    String getAccidentStatistics();

    /**
     * 交通监测系统- 获取交通警情数据
     * @param areaId
     * @param alarmType
     * @return String
     */
    String getTrifficAlarmInfo(String areaId, String alarmType);

    /**
     * 获取简图集合
     * @return List<File>
     */
    List<File> getDiagramList();

    /**
     * 分析决策支持系统-交通安全态势分析-瓶颈路段-事故发生率
     * @param startDate
     * @param endDate
     * @return String
     */
    String getAccidentRate(String startDate, String endDate, int range);

    /**
     * 分析决策支持系统-运行态势分析-公路中断率
     * @param roadType
     * return String
     */
    String getOutageProbability(String roadType);

    /**
     * 分析决策支持系统-运行态势分析-公路拥堵度
     * @param roadType
     * return String
     */
    String getDegreeOfCongestion(String roadType);

    /**
     * 交通监测系统-气象数据接口
     * @return String
     */
    String showWeather();

    /**
     * 卡口通行车数量接口
     * @param startDate
     * @param endDate
     * @param roadType
     * @return String
     */
    String getKakouCarStatis(String startDate, String endDate, String roadType);

    /**
     * 卡口通行车数量接口
     * @param startDate
     * @param endDate
     * @param roadType
     * @return String
     */
    String getKakouCarStatisByMongo(String startDate, String endDate, String roadType);


    /**
     * 根据卡口编号和时间段返回当前卡口流量预警
     * @param time
     * @param kkbh
     * @return
     */
    String getKakouCameraMessage(String time,String kkbh);


    /**
     * 查询出符合条件的卡口列表接口
     * @param dateType
     * @param flowStartTime
     * @param flowEndTime
     * @param flowRate
     * @param warminglevel
     * @return
     */
    String getKakouTabulation(String dateType,String flowStartTime,String flowEndTime,String flowRate,String warminglevel);

    /**
     * 流量预警弹框接口
     * @param dateType
     * @param flowStartTime
     * @param flowEndTime
     * @param flowRate
     * @param kkbh
     * @return
     */
    String getKakouTrafficWarning(String dateType,String flowStartTime,String flowEndTime,String flowRate,String kkbh);


    /**
     * 根据传入的名称或者模糊匹配条件进行查询
     * @param roadname
     * @return
     */
    String getRoadApplication(String roadname);


    /**
     * 获取道路信号数据接口
     * @param roadId
     * @param startTime1
     * @param startTime2
     * @param endTime1
     * @param endTime2
     * @return
     */
    String getRoadSignalData(String roadId,String startTime1,String startTime2,String endTime1,String endTime2);

    /**
     * 分析决策-运行态势分析-道路信息获取接口
     * @param roadType
     * @return
     */
    String getGSXRoadInformation(String roadType);

    /**
     * 分析决策-运行态势分析-道路流量数据接口
     * @param deviceId
     * @return
     */
    String getDMFlowRateByDeviceId(String deviceId);

    /**
     * 获取按天整合的数据（road、area）
     * @return
     */
    JSONObject getDayIndexFromOracle();

    JSONObject getHourIndexFromOracle();

    void saveRoadPredictBaseFromOracle();

    List<Map<String,Object>> dataListRoadPredict(String roadid);

    List<String> listNoWorks();

    List<Map<String,Object>> insertToPgRoadGeomtry();

    void insertTrafficFlow();

}
